package cn.tedu.boot02.utils;

import com.alibaba.druid.pool.DruidDataSource;

import java.sql.Connection;
import java.sql.SQLException;

/**
 * 使用当前类维护与数据库的连接
 */
public class DBUtil {
    private static DruidDataSource pool;//阿里提供的连接池
    static{
//        try {
//            //加载驱动,放在静态块中,加载一次就够了
//            Class.forName("com.mysql.cj.jdbc.Driver");
//        } catch (ClassNotFoundException e) {
//            e.printStackTrace();
//        }
        init();//初始化连接池
    }
    private static void init(){
        pool = new DruidDataSource();
        pool.setUsername("root");
        pool.setPassword("root");
        pool.setUrl("jdbc:mysql://localhost:3306/birddb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true");
        pool.setInitialSize(5);//连接池的初始连接数
        pool.setMaxActive(20);//最大连接数
    }

    public static Connection getConnection() throws SQLException {
//        return DriverManager.getConnection("jdbc:mysql://localhost:3306/tedu?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true","root","root");
//        return DriverManager.getConnection("jdbc:mysql://localhost:3306/birddb?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true","root","root");
        /*
            连接池返回的Connection是对实际JDBC中连接数据库的连接对象的2次封装。
            目的是:
            该Connection的close被调用时并不是真的与数据库断开连接了，而是将该连接还给连接池，共其他程序
            使用。
         */
        return pool.getConnection();
    }
}
